package cockpit.desarollo.DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import cockpit.DAO.interfaz.IUsuario;
import cockpit.comm.DTO.DatosException;
import cockpit.comm.DTO.UsuarioDTO;
import cockpit.desarrollo.ConectDB.Conneccion;
import cockpit.desarrollo.ConectDB.Constantes;




public class UsuarioDAO implements IUsuario
{

    private Connection connect = null;

    private ResultSet resultSet = null;
    
    private final String nombreTablaUsuarios=Constantes.nombreTablaUsuarios;
    
    
    /**
     * 
     * @param datos Campos que entran en la consulta como IDUSUARIO
     * @param datosCondicionales condicionales escritos algo=algo
     * @param tablas
     * @param ini
     * @param fin
     * @param order
     * @return
     * @throws SQLException
     * @throws DatosException
     */
    private ArrayList<UsuarioDTO> getBD(String[] datos, String[] datosCondicionales , String[] tablas, int ini, int fin ,int order) throws SQLException, DatosException
    {       
            return UsuarioDTO.getUsuariosResultSet( Conneccion.getBD( datos, datosCondicionales, tablas, ini, fin, order ));
      
    }
    /**
     * 
     * @param datos datos para insertar
     * @param tabla tabla
     * @throws DatosException
     * ejemplo 
     *  
        String[] datos={"idusuarios="+idusuarios,
                "idCategoria="+idCategoria,
                "cantidad="+cantidad,
                "costoVendedor="+costoVendedor,
                "costoCockpit="+costoCockpit,
                "nombreProducto="+nombreProducto,
                "descripcionProducto="+descripcionProducto,
                "historiaProducto="+historiaProducto,
                "Productoscol="+productoscol
                
        };        
        String tabla=nombreTablaProductos;
        insertBD(datos, tabla );
     * @throws SQLException 
     */
    private void insertBD(String [] datos, String tabla ) throws DatosException, SQLException
    {
       Conneccion.insertBD( datos, tabla );

    }
    /**
     * 
     * @param datos
     * @param datosCondicionales
     * @param tabla
     * @throws DatosException
     * ejemplo 
     *  String[] datos={"nombreProducto='"+nombreProducto+"'"};
        String[] datosCondicionales={"idProductos='"+idProducto+"'"};
        String tabla=nombreTablaProductos;
        updateBD(datos, datosCondicionales , tabla ) ;
     */
    private void updateBD(String[] datos, String[] datosCondicionales , String tabla ) throws DatosException
    {
        Conneccion.updateBD( datos, datosCondicionales, tabla );     
    }

    /**
     * 
     * @param datosCondicionales
     * @param tabla
     * @throws DatosException
     * ejemplo 
        String[] datosCondicionales={"idProductos='"+idProducto+"'"};
        String tabla=nombreTablaProductos;
        deleteBD( datosCondicionales , tabla ) ;
     */
    private void deleteBD(String[] datosCondicionales , String tabla ) throws DatosException
    {
        Conneccion.eliminarBD(datosCondicionales, tabla );     
    }
            

    public UsuarioDAO( )
    {

    }

    
    //Metodos USUARIO LOGIN
    
    
    public boolean existeEmailPassword( String email, String password ) throws SQLException, DatosException
    {
        String[] datos={"*"};
        String[] datosCondicionales={"email='"+email+"'",
                "password='"+password+"'"
                };
        String[] tablas={nombreTablaUsuarios};
        
        return getBD(datos, datosCondicionales ,tablas, 0, 1000 ,1).size( )>0;
        
    }
    
    public UsuarioDTO getInfoUsuarioBasic(){
        return null;
    }
    
    public UsuarioDTO getInfoUsuarioComprador(){
        return null;
    }
    
    public UsuarioDTO getInfoUsuarioVendedor(){
        return null;
    }
    
    
    //metodos 
    //AUXX TEMPORALES @TODO    
    
    public void AgregarUsuarioBasic(String email, String password) throws DatosException, SQLException{
        String[] datos={"email="+email,
                "password="+password
        };        
        String tabla=nombreTablaUsuarios;
        insertBD(datos, tabla );
    }
    public UsuarioDTO getUsuarioPasswordEmail(String email,String password) throws SQLException, DatosException{
        String[] datos={"*"};
        String[] datosCondicionales={"email='"+email+"'",
                "password='"+password+"'"
                };
        String[] tablas={nombreTablaUsuarios};
        
        return getBD(datos, datosCondicionales ,tablas, 0, 1000 ,1).get( 0 );
    
    }
    public ArrayList<UsuarioDTO> getUsuariosEmail(String email) throws SQLException, DatosException{
        String[] datos={"*"};
        String[] datosCondicionales={"email='"+email+"'"};
        String[] tablas={nombreTablaUsuarios};
        
        return getBD(datos, datosCondicionales ,tablas, 0, 1000 ,1);
    
    }
    
    public void eliminarUsuario(String email) throws DatosException{
        String[] datosCondicionales={"email='"+email+"'"};
        String tabla=nombreTablaUsuarios;
        deleteBD(datosCondicionales , tabla );
    }
    
    public void cambiarEmail(String emailini, String emailfinal) throws DatosException{
        String[] datos={"email='"+emailfinal+"'"};
        String[] datosCondicionales={"email='"+emailini+"'"};
        String tabla=nombreTablaUsuarios;
        updateBD(datos, datosCondicionales , tabla ) ;
        
    }
    
    /**
     * 
     */
    @Override
    public Connection getConnection( ) throws DatosException
    {
        try
        {
            String driverName = Constantes.DRIVERNAME; // NetDirect JDBC driver
            String serverName = Constantes.SERVERNAME;
            String portNumber = Constantes.PORTNUMBER;
            String squema = Constantes.SQUEMA;
            String mydatabase = serverName + ":" + portNumber + "/" + squema;
            String url = Constantes.URL + mydatabase; // a JDBC url
            
            // Load the JDBC driver
            Class.forName( driverName );

            // Create a connection to the database
            
            connect = DriverManager.getConnection( url, Constantes.USER, Constantes.PASSWORD );
            // conectado
            //System.out.println("conectado: "+connect );
            return connect;
        }
        catch( ClassNotFoundException e )
        {
            System.out.println("error: "+e.getMessage( ));
            throw new DatosException( "Could not find the database driver" );
        }
        catch( SQLException e )
        {
            throw new DatosException( "Could not connect to the database" );
        }
    }

    @Override
    public void closeConnection( ) throws DatosException
    {
        try
        {
            System.out.println(connect);
            connect.close( );
        }
        catch( SQLException e )
        {
            throw new DatosException( e.getMessage( ) );
        }
        connect = null;
    }

    private void inicializar( ) throws DatosException
    {
        try
        {
            connect = getConnection( );
        }
        catch( DatosException e )
        {
            throw new DatosException( e.getMessage( ) );
        }

    }

    
    @Override
    public ArrayList<UsuarioDTO> getUsuarios( ) throws DatosException
    {
        try
        {
            inicializar( );
            ArrayList<UsuarioDTO> usuarios = new ArrayList<UsuarioDTO>( );
            String consulta =   
                    "SELECT" +
                    " " +
            		"TB_Usuario.idUsuario," + 
                    "TB_Usuario.tipoUsuario," + 
                    "TB_Usuario.email," +
                    "TB_Usuario.password," +
                    "TB_Usuario.lastLogin," +
                    "TB_Usuario.nombre," +
                    "TB_Usuario.apellido," +
                    "TB_Usuario.direccion," +
                    "TB_Usuario.telefono," +
                    "TB_Usuario.estado," +
                    
                    "TB_InfoVendedor.idInfoVendedor," +
                    "TB_InfoVendedor.idInfoCuenta," +
                    "TB_InfoVendedor.numeroIdentificacion," +
                    "TB_InfoVendedor.region," +
                    "TB_InfoVendedor.celular," +
                    "TB_InfoVendedor.paginaWeb," +
                    "TB_InfoVendedor.twitter," +
                    "TB_InfoVendedor.facebook," +
                    "TB_InfoVendedor.biografia," +
                    
                    "TB_Pais.idPais," +
                    "TB_Pais.nombre," +
                    
                    "TB_TipoId.idTipoId," +
                    "TB_TipoId.tipo," +
                    "TB_TipoId.descripcion," +
                    
                    "TB_InfoCuenta.idInfoCuenta," +
                    "TB_InfoCuenta.idBanco," +
                    "TB_InfoCuenta.idTipoCuenta," +
                    "TB_InfoCuenta.numeroCuenta," +
                    
                    "TB_TipoCuenta.idTipoCuenta," +
                    "TB_TipoCuenta.tipoCuenta," +
                    "TB_TipoCuenta.descripcion," +
                    
                    "TB_Banco.idBanco," +
                    "TB_Banco.nombreBanco," +
                    "TB_Banco.descripcion" + 
                    " " +
                    "FROM " +
                    "Usuario TB_Usuario," +
                    "InfoVendedor TB_InfoVendedor," +
                    "InfoCuenta TB_InfoCuenta," +
                    "TipoCuenta TB_TipoCuenta," +
                    "Banco TB_Banco," +
                    "Pais TB_Pais," +
                    "TipoId TB_TipoId" +
                    " " +
                    "WHERE" +
                    " " +
                    "TB_Usuario.idInfoVendedor = TB_InfoVendedor.idInfoVendedor" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idInfoCuenta = TB_InfoCuenta.idInfoCuenta" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idPais = TB_Pais.idPais" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idTipoId = TB_TipoId.idTipoId" +
                    " " +
                    "AND" +
                    " " +
                    "TB_Usuario.estado = " +UsuarioDTO.ESTADO_ACTIVADO+
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoCuenta.idTipoCuenta = TB_TipoCuenta.idTipoCuenta;";
            
            PreparedStatement stmt = connect.prepareStatement( consulta );
            if( stmt != null )
            {
                resultSet = stmt.executeQuery( );

                while( resultSet.next( ) )
                {
                    UsuarioDTO usuario = new UsuarioDTO( resultSet );

                    usuarios.add( usuario );
                }
            }
            closeConnection( );

            return usuarios;
        }
        catch( Exception e )
        {
            throw new DatosException( e.getMessage( ) );
        }
    }
    
    @Override
    public ArrayList<UsuarioDTO> getUsuariosIdUsuario( long idUsuario ) throws DatosException
    {
        try
        {

            inicializar( );
            ArrayList<UsuarioDTO> usuarios = new ArrayList<UsuarioDTO>( );
            String consulta =   
                    "SELECT" +
                    " " +
                    "TB_Usuario.idUsuario," + 
                    "TB_Usuario.tipoUsuario," + 
                    "TB_Usuario.email," +
                    "TB_Usuario.password," +
                    "TB_Usuario.lastLogin," +
                    "TB_Usuario.nombre," +
                    "TB_Usuario.apellido," +
                    "TB_Usuario.direccion," +
                    "TB_Usuario.telefono," +
                    "TB_Usuario.estado," +
                    
                    "TB_InfoVendedor.idInfoVendedor," +
                    "TB_InfoVendedor.idInfoCuenta," +
                    "TB_InfoVendedor.numeroIdentificacion," +
                    "TB_InfoVendedor.region," +
                    "TB_InfoVendedor.celular," +
                    "TB_InfoVendedor.paginaWeb," +
                    "TB_InfoVendedor.twitter," +
                    "TB_InfoVendedor.facebook," +
                    "TB_InfoVendedor.biografia," +
                    
                    "TB_Pais.idPais," +
                    "TB_Pais.nombre," +
                    
                    "TB_TipoId.idTipoId," +
                    "TB_TipoId.tipo," +
                    "TB_TipoId.descripcion," +
                    
                    "TB_InfoCuenta.idInfoCuenta," +
                    "TB_InfoCuenta.idBanco," +
                    "TB_InfoCuenta.idTipoCuenta," +
                    "TB_InfoCuenta.numeroCuenta," +
                    
                    "TB_TipoCuenta.idTipoCuenta," +
                    "TB_TipoCuenta.tipoCuenta," +
                    "TB_TipoCuenta.descripcion," +
                    
                    "TB_Banco.idBanco," +
                    "TB_Banco.nombreBanco," +
                    "TB_Banco.descripcion" + 
                    " " +
                    "FROM " +
                    "Usuario TB_Usuario," +
                    "InfoVendedor TB_InfoVendedor," +
                    "InfoCuenta TB_InfoCuenta," +
                    "TipoCuenta TB_TipoCuenta," +
                    "Banco TB_Banco," +
                    "Pais TB_Pais," +
                    "TipoId TB_TipoId" +
                    " " +
                    "WHERE" +
                    " " +
                    "TB_Usuario.idInfoVendedor = TB_InfoVendedor.idInfoVendedor" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idInfoCuenta = TB_InfoCuenta.idInfoCuenta" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idPais = TB_Pais.idPais" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idTipoId = TB_TipoId.idTipoId" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoCuenta.idTipoCuenta = TB_TipoCuenta.idTipoCuenta" +
                    " " +
                    "AND" +
                    " " +
                    "TB_Usuario.estado = " +UsuarioDTO.ESTADO_ACTIVADO+
                    " " +
                    "AND" +
                    " " +
                    "TB_Usuario.idUsuario = ?;";

            PreparedStatement stmt = connect.prepareStatement( consulta );
            
            stmt.setLong( 1,  idUsuario );
            
            if( stmt != null )
            {
                resultSet = stmt.executeQuery( );

                while( resultSet.next( ) )
                {
                    UsuarioDTO usuario = new UsuarioDTO( resultSet );
                    usuarios.add( usuario );
                }
            }
            closeConnection( );

            return usuarios;
        }
        catch( Exception e )
        {
            throw new DatosException( e.getMessage( ) );
        }
    }

    @Override
    public ArrayList<UsuarioDTO> getUsuariosEmailPassword(String email, String password ) throws DatosException
    {
        try
        {

            inicializar( );
            ArrayList<UsuarioDTO> usuarios = new ArrayList<UsuarioDTO>( );
            String consulta =   
                    "SELECT" +
                    " " +
                    "TB_Usuario.idUsuario," + 
                    "TB_Usuario.tipoUsuario," + 
                    "TB_Usuario.email," +
                    "TB_Usuario.password," +
                    "TB_Usuario.lastLogin," +
                    "TB_Usuario.nombre," +
                    "TB_Usuario.apellido," +
                    "TB_Usuario.direccion," +
                    "TB_Usuario.telefono," +
                    "TB_Usuario.estado," +
                    
                    "TB_InfoVendedor.idInfoVendedor," +
                    "TB_InfoVendedor.idInfoCuenta," +
                    "TB_InfoVendedor.numeroIdentificacion," +
                    "TB_InfoVendedor.region," +
                    "TB_InfoVendedor.celular," +
                    "TB_InfoVendedor.paginaWeb," +
                    "TB_InfoVendedor.twitter," +
                    "TB_InfoVendedor.facebook," +
                    "TB_InfoVendedor.biografia," +
                    
                    "TB_Pais.idPais," +
                    "TB_Pais.nombre," +
                    
                    "TB_TipoId.idTipoId," +
                    "TB_TipoId.tipo," +
                    "TB_TipoId.descripcion," +
                    
                    "TB_InfoCuenta.idInfoCuenta," +
                    "TB_InfoCuenta.idBanco," +
                    "TB_InfoCuenta.idTipoCuenta," +
                    "TB_InfoCuenta.numeroCuenta," +
                    
                    "TB_TipoCuenta.idTipoCuenta," +
                    "TB_TipoCuenta.tipoCuenta," +
                    "TB_TipoCuenta.descripcion," +
                    
                    "TB_Banco.idBanco," +
                    "TB_Banco.nombreBanco," +
                    "TB_Banco.descripcion" + 
                    " " +
                    "FROM " +
                    "Usuario TB_Usuario," +
                    "InfoVendedor TB_InfoVendedor," +
                    "InfoCuenta TB_InfoCuenta," +
                    "TipoCuenta TB_TipoCuenta," +
                    "Banco TB_Banco," +
                    "Pais TB_Pais," +
                    "TipoId TB_TipoId" +
                    " " +
                    "WHERE" +
                    " " +
                    "TB_Usuario.idInfoVendedor = TB_InfoVendedor.idInfoVendedor" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idInfoCuenta = TB_InfoCuenta.idInfoCuenta" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idPais = TB_Pais.idPais" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoVendedor.idTipoId = TB_TipoId.idTipoId" +
                    " " +
                    "AND" +
                    " " +
                    "TB_InfoCuenta.idTipoCuenta = TB_TipoCuenta.idTipoCuenta" +
                    " " +
                    "AND" +
                    " " +
                    "TB_Usuario.email = ?" +
                    " " +
                    "AND" +
                    " " +
                    "TB_Usuario.estado = " +UsuarioDTO.ESTADO_ACTIVADO+
                    " " +
                    "AND" +
                    " "
                    +
                    "TB_Usuario.password = ? ;";

            PreparedStatement stmt = connect.prepareStatement( consulta );
            
            stmt.setString( 1,  email );
            
            stmt.setString( 2,  password );
            
            if( stmt != null )
            {
                resultSet = stmt.executeQuery( );

                while( resultSet.next( ) )
                {
                    UsuarioDTO usuario = new UsuarioDTO( resultSet );
                    usuarios.add( usuario );
                }
            }
            closeConnection( );

            return usuarios;
        }
        catch( Exception e )
        {
            throw new DatosException( e.getMessage( ) );
        }
    }

    @Override
    public long insertUsuarioVendedor(int prmIdInfoVendedor, String prmEmail, String prmPassword, String prmLastLogin, String prmNombre, String prmApellido, String prmDireccion, String prmTelefono ) throws DatosException
    {
        try
        {
            inicializar( );

            connect.setAutoCommit( false );

            String consulta =   "INSERT INTO " + nombreTablaUsuarios+ 
                                "(" +
                                " " + 
                                "tipoUsuario," +
                                "idInfoVendedor," +
                                "email," +
                                "password," +
                                "lastLogin," +
                                "nombre," +
                                "apellido," +
                                "direccion," +
                                "telefono" +
                                " "+
                                ")" +
                                "VALUES(" +
                                " " +
                                "?," +
                                "?," +
                                "?," +
                                "?," +
                                "?," +
                                "?," +
                                "?," +
                                "?," +
                                "?) ";

            String consulta2 = "SELECT last_insert_id() as prmInsertId; ";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            PreparedStatement stmt2 = connect.prepareStatement( consulta2 );

            stmt.setInt( 1, UsuarioDTO.TIPO_VENDEDOR );
            stmt.setInt( 2, prmIdInfoVendedor );
            stmt.setString( 3, prmEmail );
            stmt.setString( 4, prmPassword );
            stmt.setString( 5, prmLastLogin );
            stmt.setString( 6, prmNombre );
            stmt.setString( 7, prmApellido );
            stmt.setString( 8, prmDireccion );
            stmt.setString( 9, prmTelefono );

            long prmLongIdTransaccion = 0;
            if( stmt != null )
            {
                stmt.execute( );
                resultSet = stmt2.executeQuery( );

                if( resultSet.next( ) )
                {
                    prmLongIdTransaccion = resultSet.getLong( "prmInsertId" );
                }

            }

            connect.commit( );

            return prmLongIdTransaccion;
        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }

    }

    @Override
    public void updateUsuarioEmail( String email, long idUsuario ) throws DatosException
    {
        try
        {
            inicializar( );
            connect.setAutoCommit( false );

            String consulta =   "UPDATE " + nombreTablaUsuarios+ 
                                " " + 
                                "SET email = ? " + 
                                "WHERE idUsuarios = ? ;";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            stmt.setString( 1, email );

            stmt.setLong( 2, idUsuario );
            
            if( stmt != null )
            {
                stmt.execute( );
            }

            connect.commit( );

        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }

    }
    
    @Override
    public void updateUsuarioPass( String pass, long idUsuario ) throws DatosException
    {
        try
        {
            inicializar( );
            connect.setAutoCommit( false );

            String consulta =   "UPDATE " + nombreTablaUsuarios+ 
                                " " + 
                                "SET password = ? " + 
                                "WHERE idUsuarios = ? ;";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            stmt.setString( 1, pass );

            stmt.setLong( 2, idUsuario );
            
            if( stmt != null )
            {
                stmt.execute( );
            }

            connect.commit( );

        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }

    }
    
    @Override
    public void updateUsuarioLogin( String login, long idUsuario ) throws DatosException
    {
        try
        {
            inicializar( );
            connect.setAutoCommit( false );

            String consulta =   "UPDATE " + nombreTablaUsuarios+
                                " " + 
                                "SET lastLogin = ? " +
                                "WHERE idUsuario = ? ;";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            stmt.setString( 1, login );

            stmt.setLong( 2, idUsuario );
            
            if( stmt != null )
            {
                stmt.execute( );
            }

            connect.commit( );

        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }
    }
    
    @Override
    public boolean existePassword( String prmPassword ) throws DatosException
    {
        try
        {
            inicializar( );
            connect.setAutoCommit( false );

            String consulta =   "SELECT" +
                                " " + 
                                "password" +
                                " " +
                                "FROM " + nombreTablaUsuarios+
                                " " +
                                "WHERE password = ? ";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            stmt.setString( 1, prmPassword );
            String varPassword = "";
            if( stmt != null )
            {
                resultSet = stmt.executeQuery( );

                if( resultSet.next( ) )
                {
                    varPassword = resultSet.getString( "password" );
                }
            }

            connect.commit( );
            
            if(varPassword.equals( "" ))
            {
                return false;
            }else
            {
                return true;                
            }

        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }
    }
    
    @Override
    public boolean existeEmail( String prmEmail ) throws DatosException
    {
        try
        {
            inicializar( );
            connect.setAutoCommit( false );

            String consulta =   "SELECT" +
                                " " + 
                                "email" +
                                " " +
                                "FROM " + nombreTablaUsuarios+
                                " " +
                                "WHERE email = ? ";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            stmt.setString( 1, prmEmail );
            String varEmail= "";
            if( stmt != null )
            {
                resultSet = stmt.executeQuery( );

                if( resultSet.next( ) )
                {
                    varEmail = resultSet.getString( "email" );
                }
            }

            connect.commit( );
            
            if( varEmail.equals( "" ) )
            {
                return false;
            }else
            {
                return true;                
            }

        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }
    }
    
    @Override
    public void updateUsuarioEstadoDesactivado( long idUsuario ) throws DatosException
    {
        try
        {
            inicializar( );
            System.out.println("conect: "+connect);
            connect.setAutoCommit( false );

            String consulta =   "UPDATE " + nombreTablaUsuarios+
                                " " + 
                                "SET" +
                                " " +
                                "estado = " + UsuarioDTO.ESTADO_DESACTIVADO +
                                " " +
                                "WHERE idUsuarios = ? ;";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            stmt.setLong( 1, idUsuario );
            
            if( stmt != null )
            {
                stmt.execute( );
            }

            connect.commit( );

        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }
    }
    
    @Override
    public void updateUsuarioEstadoActivado( long idUsuario ) throws DatosException
    {
        try
        {
            inicializar( );
            connect.setAutoCommit( false );

            String consulta =   "UPDATE " + nombreTablaUsuarios+
                                " " + 
                                "SET" +
                                " " +
                                "estado = " + UsuarioDTO.ESTADO_ACTIVADO +
                                " " +
                                "WHERE idUsuarios = ? ;";

            PreparedStatement stmt = connect.prepareStatement( consulta );

            stmt.setLong( 1, idUsuario );
            
            if( stmt != null )
            {
                stmt.execute( );
            }

            connect.commit( );

        }
        catch( Exception e )
        {
            try
            {
                connect.rollback( );
            }
            catch( SQLException e1 )
            {
                e1.printStackTrace( );
            }
            e.printStackTrace( );
            throw new DatosException( e.getMessage( ) );
        }
        finally
        {
            closeConnection( );
        }
    }
   

}
